#include <stc15.h>
#include <stdio.h>
#include <chuang.h>
#include <time.h>
#include <IIC.h>
#include <intrins.h>

#define uint unsigned int 
#define uchar unsigned char
float ph_num;
uchar num,ph_pingj;
	
float ph_value=0,ph_value_num=0;
uchar ph_tab[20],ph_num_tab[10];
void main_waishe(void);
void main_xianxi(void);
void main_waishe_1(void);
void Delay2000ms();		//@12.000MHz

void main()
{
	
	UartInit();
	P0=0x00;P2=0xa0;
	EA=1;
	while(1)
	{
//		main_waishe();
//		main_waishe_1();
//		main_xianxi();
		
		
		//			ph_read();
		uchar i,i_1;
		ph_value=0;ph_value_num=0;ph_num=0;ph_pingj=0;
		for(i=0;i<20;i++)
		{
			pcf8591init(num);
			num=pcf8591raed(0x02);
			ph_num=num*0.0196;
			
			ph_value=21.667-(5.8887*ph_num);
			
			ph_value=ph_value/2;
			
			
			
			ph_tab[i]=ph_value;
			ph_num_tab[i]=num;
			ph_pingj=num+ph_pingj;
//			Delay10ms();
		}
		for(i_1=0;i_1<20;i_1++)
		{
			ph_value_num=ph_value_num+ph_tab[i_1];
//			Delay10ms();
		}
		ph_value=ph_value_num/20;
		ph_pingj=ph_pingj/20;
		printf("PH_value=%d %d %d %d %d %d %d %d %d %d\r\n",(uint)ph_num_tab[0],(uint)ph_num_tab[1],(uint)ph_num_tab[2],(uint)ph_num_tab[3],(uint)ph_num_tab[4],(uint)ph_num_tab[5],(uint)ph_num_tab[6],(uint)ph_num_tab[7],(uint)ph_num_tab[8],(uint)ph_num_tab[9]);
		printf("PH_pingj=%d\r\n",(uint)ph_pingj);
		printf("PH=%4.2f\r\n",ph_value);
		Delay2000ms();
	}
	
}


void main_waishe(void)
{
		num=pcf8591raed(0x00);
		pcf8591init(num);
		if((num<=130)&&(num>=120))      ////ph=3~4
		{
			ph_value=16-(0.0275*num);
		}else if((num<120)&&(num>=105)) ////ph=4~5~6
		{
			ph_value=21.33-(0.133*num);
		}else if((num<105)&&(num>=85))  ////ph=678
		{
			ph_value=16.5-(0.098*num);
		}else if((num<85)&&(num>=40))  ////ph=89
		{
			ph_value=11.677-(0.0667*num);
		}else if((num<40)&&(num>=25))  ////ph=10  11
		{
			ph_value=12.667-(0.0667*num);
		}else if((num<25)&&(num>=18))  ////ph=11    12
		{
			ph_value=14.57-(0.0735*num);
		}else if((num<18)&&(num>=0))  ////ph=12  14
		{
			ph_value=14-(0.1111*num);
		}
		
}


void main_waishe_1(void)
{
		num=pcf8591raed(0x00);
		pcf8591init((num*2));
		if((num<=130)&&(num>=90))      ////ph=3~4
		{
			ph_value=(0.0393*num);
		}else if((num<90)&&(num>=80)) ////ph=4~5~6
		{
			ph_value=(0.0606*num);
		}else if((num<80)&&(num>=60))  ////ph=678
		{
			ph_value=(0.0966*num);
		}else if((num<60)&&(num>=25))  ////ph=89
		{
			ph_value=(0.18*num);
		}else if((num<25)&&(num>=20))  ////ph=10  11
		{
			ph_value=(0.4666*num);
		}else if((num<20)&&(num>=13))  ////ph=11    12
		{
			ph_value=(0.753*num);
		}else if((num<13)&&(num>=0))  ////ph=12  14
		{
			ph_value=(0.4786*num);
		}
		if(ph_value<1)ph_value=1;
		if(ph_value>14)ph_value=14;
		
}


void main_xianxi(void)
{
	printf("PH=%4.2f\r\n",ph_value);
}	

void Delay2000ms()		//@12.000MHz
{
	unsigned char i, j, k;

	_nop_();
	_nop_();
	i = 92;
	j = 50;
	k = 238;
	do
	{
		do
		{
			while (--k);
		} while (--j);
	} while (--i);
}

